E-mail based workflow systems and methods of distributing e-mail

ABSTRACT

The invention relates to message-based workflow systems and methods for computer networks. In one embodiment, the invention provides: (1) an e-mail system; (2) PC&#39;s, terminals, and/or workstations; and (3) a form route manager connected by the e-mail system. In another, the invention provides an e-mail-based workflow system for processing a document, connected to a computer network and a system for sending an e-mail, including a form route manager, connected to the computer network, capable of receiving and sending the e-mail, and capable of defining a route, a step-by-step sequence of e-mail addresses, in the network.

This application is a division of application Ser. No. 08/901,539 filedon Jul. 28, 1997, now U.S. Pat. No. 5,978,836, which is herebyincorporated by reference.

BACKGROUND OF THE INVENTION

The present invention relates to the field of computer networks, and inparticular to workflow systems and methods used in computer networks tocontrol, access, process, track, and modify documents.

A workflow system automates processing of documents in computer networksby defining the sequence of users with access to documents transmittedin the computer network. One application suitable for workflow isbusiness travel reimbursement, having the following steps: (1) thetraveler sends a request for reimbursement to a manager; (2) the managerreviews it; and (3) the manager either sends the approved request toaccounting for payment or returns the request to the traveler forclarification. During the process, the users of the workflow system maywant certain information. The manager may want information from thetraveler before approval, accounting may want the total number ofrequests submitted by the traveler within the year, and the traveler maywant to know where the request is in the process, especially if it isdelayed.

A route describes the step-by-step sequence of a given workflow. Theroute may have a linear sequence and/or complex conditional branching.The latter type may require databases to store the independent parallelroutes which later join to form a linear route. Simple workflow mayrequire only an e-mail system to emulate paper-based procedures usingmail and routing slips. As shown in FIG. 1a, a database workflow systemstores the document, the route, and the sequence of access in datatables. Because the information is stored in the memory of the databasesystem, database systems can provide for complex routes, supplyinformation on the document, and alert users to process delays. Manydatabases also have failure detection and recovery mechanisms to assurereliability. However, databases require that users employ specificprograms to process the workflow, and remain connected to the databasefor the entire session, which can result in expensive long distancephone calls when users are remote from the database. Because the usersmay participate in many workflow processes, database workflow systemsmay require a number of specific programs to be loaded in their PCs andrequire access to a number of databases. This may unnecessarily confuseusers who must then identify the programs and the databases associatedwith a given workflow.

As shown in FIG. 1b, an e-mail workflow system transmits the documentand the route in the e-mail. This has the advantage that users only neede-mail programs such as Lotus cc:Mail or Microsoft Exchange. Further, aremote user such as a traveling manager can approve documents as remotee-mail. However, since key information about the document is in thee-mail, the workflow process fails if the e-mail is lost. Because thereis no central memory, even basic information such as location of adocument may be lost. In addition, since there is no access to globalinformation, the e-mail workflow routes are limited to simple linearroutes. Further, because the route is part of the e-mail and coded for aparticular system, each PC must have a specific program to send thee-mail to the next user. So while users may have the advantage of easyaccess in e-mail workflow systems, they must have specific programsloaded in their PC before participating in the workflow process. Thismakes ad hoc creation of a workflow route impracticable, because theparticipants must have prepared in advance by loading all of theappropriate software in their PCs. As with the database workflow systemin which many users participate in the workflow, an e-mail workflowrequires many workflow programs be loaded in each PC, lacks capabilityto perform complex routes and track documents. Thus, the overall benefitof using current e-mail workflow systems is limited.

It would be desirable if workflow systems existed which could performcomplex database functions, provide the easy accessibility of e-mail,avoid the need for specific programs in each PC, and insulate the userfrom the need to identify the pertinent server for a given workflowprocess.

SUMMARY OF THE INVENTION

The present invention relates to message-based workflow systems andmethods. In one embodiment, the present invention provides threeelements: (1) an e-mail system; (2) PC's, terminals, or workstationsconnected by the e-mail system; and (3) a form route manager connectedby the e-mail system.

In one embodiment, the present invention provides an e-mail-basedworkflow system for processing a document, where the system is connectedto a computer network and an e-mail system, comprising:

(1) a form route manager, connected to the computer network, capable ofreceiving and sending the e-mail, and capable of defining:

(2) a route, a step-by-step sequence of e-mail addresses, in thenetwork; and wherein a computer with an e-mail address in the network isadapted to send the e-mail to the form route manager which is adapted tosend the e-mail to the next e-mail address in the route.

In another embodiment, the present invention provides a method forcentrally distributing an e-mail to a step-by-step sequence of e-mailaddresses, comprising:

(1) receiving the e-mail with an indicator of the step in the sequence;

(2) determining from the indicator and the sequence, the successore-mail address in the sequence;

(3) updating the e-mail indicator to the successor step; and

(4) sending the e-mail to the successor e-mail address.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1a illustrates the architecture of a conventional database workflowsystem.

FIG. 1b illustrates the architecture of a conventional e-mail workflowsystem.

FIG. 2 illustrates one embodiment of the hardware of the form routemanager.

FIG. 3 illustrates one embodiment of the software stored in the memoryof the form route manager.

FIG. 4 is the ISO OSI network layer model, and the relationship of themodel to the form route manager.

FIG. 5 is a flowchart of the form route manager functions and theworkflow user functions.

FIG. 6 is a block diagram of the system and the sequence of e-mailsdemonstrating one function of the present invention.

FIG. 7 is an example of business travel reimbursement approval.

FIG. 8 is a block diagram and sequence of e-mails illustrating thefunction to support multiple routes.

FIG. 9 is a block diagram and sequence of e-mails illustrating thetables and functions to track the location and move history of eachworkflow document.

FIG. 10 is a block diagram and sequence of e-mails illustrating theCONDITIONAL BRANCH function.

FIG. 11 is a block diagram and sequence of e-mails illustrating theCONDITIONAL CANCEL function.

FIG. 12 is a block diagram and sequence of e-mails illustrating thefunction to send an e-mail to a specified list of e-mail addresses whena branch of a CONDITIONAL BRANCH is selected.

FIG. 13 is a block diagram and sequence of e-mails illustrating thefunction to send an e-mail to a specified list of e-mail address whenthe workflow passes a specific step in the route.

FIG. 14 is a block diagram and sequence of e-mails illustrating thesending of an e-mail to a user not on route and not tracked by formroute manager.

FIG. 15 is a block diagram and sequence of e-mails illustrating thesending of an e-mail to a user not on route but tracked by form routemanager.

FIG. 16 is a block diagram and tables to create a new route based on themove history table.

FIG. 17 is a block diagram and sequence of e-mails illustrating thecooperative functions of two form route managers to support a route thatstarts in one and continues in the other.

FIG. 18 is a block diagram illustrating the FORK and JOIN functions andparallel branch routes in a route.

FIG. 19 is a block diagram and sequence of e-mails illustrating rulebased FORK branch function.

FIG. 20 is a block diagram and sequence of e-mails illustrating rulebased JOIN function.

FIG. 21 is a block diagram and sequence of e-mails illustrating errordetection using timed intervals and error recovery of a lost e-mailusing a stored copy of the e-mail.

FIG. 22 is a block diagram and sequence of e-mail illustrating one formroute manager backing up another form route manager.

FIG. 23 is a block diagram and sequence of e-mails illustrating thedocument format change by form route manager based on the route.

FIG. 24 is a block diagram and sequence of e-mails illustrating theSTATUS REQUEST and the response and use of e-mail REPLY functions forusers to obtain status on documents.

FIG. 25 is a block diagram and tables illustrating the mapping of athree-step route with the roles at each step mapped to the e-mailaddress based on a project identifier.

FIG. 26 is a block diagram and sequence of World Wide Web accesses ande-mails illustrating a combined web page and e-mail based workflowsystem.

FIG. 27 is a block diagram and sequence of World Wide Web accesses andweb page data transfers illustrating the use of web page technology formessage based workflow system.

DESCRIPTION OF PREFERRED EMBODIMENTS

The systems and methods for message-based workflow preferably operatesin a computer network. The form route manager is embodied in a computerin the network. With reference to FIG. 2, one embodiment of the formroute manager is comprised of a processor (CPU) 21, a memory 22, storagedevices 23, input devices 24, network interface 25, communicationsinterface 26, and display 27. These elements are interconnected by a bus28 as typically implemented in an IBM compatible PC. The CPU 21 ispreferably an Intel Pentium, AMD K6, Power PC, Motorola 68000, or thelike. The display 27 is preferably a video monitor and the input device24 is a keyboard and mouse. The storage devices 23 are a hard diskdrive, a floppy diskette drive and a CD ROM drive. Those skilled in theart would realize the form route manager may be a workstation,mini-computer, or mainframe computer and that they may be used bymultiple users with multiple sets of display and input devices.

The network interface 25 connected to bus 28 is connected to a localarea network (LAN) or wide area network (WAN) 210 to communicate toother computers in the network. The network interface 25 is preferablyan Ethernet or Token ring adapter connected to a twisted pair wire or toa coaxial cable. The communications interface 26 is connected 29 to acommunications network which communicates with other computers using thedial up phone system as a network. The communications interface 26 ispreferably a modem. The CPU 21 operates under the control ofinstructions stored in memory 22.

FIG. 3 illustrates a more detailed preferred embodiment of memory 22.The memory 22 is preferably random access memory (RAM) but may includeread only memory (ROM). The memory 22 includes operating system 31,e-mail mailbox 32 with an in-box 33 and an out-box 34, and the formroute manager 35. The operating system is preferably Microsoft WindowsNT or Windows 95. The e-mail mailbox 32 is preferably Microsoft Exchangeor Lotus cc:Mail. Each e-mail mailbox 32 has an e-mail address that is aunique identifier within the e-mail system. Each e-mail message containsa field with the e-mail address of the e-mail mailbox 32 to which thee-mail is sent, a field with the e-mail address of the e-mail mailbox 32from which it was sent, and a field with the content of the message. Auser of an e-mail mailbox 32 receives e-mail in the in-box 33 and canselect, open and read the e-mail. New e-mail is created using a texteditor, addressed with the e-mail address of the mailbox to which it isto be sent, and is sent by placing the e-mail in the out-box 34. Thee-mail on the LAN and WAN is transmitted to the in-box 33 and from theout-box 34 through the network interface 25 and through thecommunications interface 26 for e-mail transmitted remotely using thedial up phone lines. E-mail is generally discussed on pages 643-669 insection 7.4 of Tanenbaum, Computer Networks (1996), Prentice-Hall, whichis hereby incorporated by reference.

The form route manager 35 uses the e-mail as an application. FIG. 4illustrates the form route manager 35 in relationship to the ISO OSIreference model 41 and the implementation layers 42 of the ISO OSIreference model. Those skilled in the art will recognize that the formroute manager may be adapted to unitize a wide set of messaging ande-mail systems such as IBM PROFS, DEC Mail, Internet Mail, Oracle Mail,Lotus cc:Mail, Microsoft Exchange, SMTP mail, wireless mail, LAN- andWAN-based, remote mail and mail access using phone lines, Internetaccess, wireless access, voice mail, video mail, and other forms ofmessaging with characteristics of addressable messages. Since theInternet functions to connect numerous e-mail systems, all e-mailsystems connected to the Internet, even those connected throughintermediate mail systems and relay nodes, can be considered to be partof one e-mail system.

The function of the form route manager 35 is illustrated in theflowchart in FIG. 5. The route is a step-by-step sequence of e-mailaddresses. The mailbox for the form route manager is assigned an e-mailaddress. The e-mails addressed to the form route manager are received inthe in-box 33. At step 52, the form route manager checks if the e-mailis in the in-box 33. If there is an e-mail, it checks at step 53 if thee-mail is sent from an e-mail address that is the last step in theroute. If it is the last step in the route, the e-mail is deleted atstep 54 from the in-box. If it is not the last step, at step 55, a stepfield is set to the next step in the route and the e-mail address is setto the e-mail address of the next step in the route. The e-mail is sentto the next e-mail address by using out-box 34. The e-mail is deleted atstep 54 from the in-box. In other words, the form route manager receivesan e-mail from an e-mail address in the route and sends it to the nexte-mail address in the route. If the e-mail is from the e-mail addressthat is the last step in the route, the e-mail is not sent further.

The form route manager function is part of a message-based workflowsystem. This is illustrated in FIG. 5, where the e-mail contains aworkflow document and the route specifies the step-by-step sequence ofe-mail addresses of the workflow. The message-based workflow userreceives the workflow document as e-mail in the in-box 33. The userselects 58 the e-mail from the in-box 33, opens the e-mail, sets thee-mail address to that of the form route manager, processes the workflowdocument in the e-mail, and sends the e-mail back to the form routemanager using the out-box 34. The form route manager receives the e-mailin the in-box, and if this is not the last step in the route, sends thee-mail to the next e-mail address as described earlier. This processcontinues until the workflow route is completed.

Many e-mail systems have a reply function which returns an e-mail to thesender, which can be used to return e-mail to the form route managerwithout explicitly entering the e-mail address of the form routemanager. A more complex environment may have multiple form routemanagers, each with an e-mail address. In a preferred embodiment, usersneed not be concerned as to which form route manager sent the e-mail,because the reply function will return e-mail to the correct form routemanager. The users need only open the e-mail from the in-box, processthe workflow document in the e-mail, use the reply function to addressthe e-mail to the correct form route manager, and send it out theout-box.

The form route manager provides a central, sequential e-maildistribution function based on the step-by-step sequence of a routewhere a computer in the network sends an e-mail to the form routemanager and the form route manager sends the e-mail to the next computerin the route.

In an embodiment the route defines the sequence of e-mail addresses ofthe workflow. The route is contained in a table of structured querylanguage (SQL) in an SQL database accessed by the form route manager. Asshown in FIG. 6, the route 610 includes an e-mail address A, an e-mailaddress B, and an e-mail address C implemented by the SQL table ROUTEwhere each row of the table represents a step in the route: STEP, thenext e-mail address: NEXT E-MAIL ADDRESS, and the next step in theroute: NEXT STEP.

SQL TABLE ROUTE: STEP NEXT E-MAIL ADDRESS NEXT STEP 1 B 2 2 C 3 3 NULLNULL

The first row indicates that for step=1, the next e-mail address is Band the next step is 2. For the second row step=2, and the next e-mailis C and next step is 3. The third row for step=3, the next e-mailaddress and next step values are NULL which indicates step 3 is the laststep in the route.

The e-mail and the form route manager contain the information necessaryto identify the step in the route. As shown in FIG. 6, in oneimplementation, the e-mail contains a control field, STEP 69, that holdsthe value of step to access the route SQL table to determine the nexte-mail address and next step. Those skilled in the art will realizethere are many data structures that can be used to implement theinformation needed in the route and that the route step information canbe indicated by other means such as a storage location in the form routemanager.

FIG. 6 illustrates the workflow e-mail format, the route in the formroute manager and the sequence of e-mails sent between the e-mailaddresses and the form route manager to effect the workflow of route 610for the sequence: A to B to C. The e-mail format 66 consists of thee-mail To and From address fields 67, the workflow document as the bodyof the message 68, and the control field, STEP 69.

In one embodiment, the workflow document is processed as follows:

1) The user at e-mail address A initiates the workflow by sending ane-mail 61 with document R and STEP=1 to the form route manager;

2) The form route manager receives the e-mail 61, and determines fromSTEP=1 and the route that the next e-mail address is B and the next stepis 2. The form route manager updates STEP=2 and sends the workflowdocument R as e-mail 62 to e-mail address B;

3) The user at e-mail address B receives the e-mail 62 from the formroute manager, processes the document by changing the body of themessage to S, and sends e-mail 63 back to the form route manager;

4) The form route manager receives the e-mail 63, and determines fromSTEP=2 and the route that the next e-mail address is C and that the nextstep is 3. The form route manager updates STEP=3 and sends the workflowdocument as e-mail 64 to e-mail address C;

5) A user at e-mail address C receives the e-mail 64 from the form routemanager, processes the document by changing the body to T, and sendse-mail 65 back to the form route manager; and

6) The form route manager receives the e-mail 65 and determines fromSTEP=3 and the route the next step is NULL which completes the route.

In this example, the workflow document is embodied in five differente-mails, but at any time only one is the active carrier of the document.If e-mail 61 is transformed into e-mail 62, the e-mail 61 no longer actsas the carrier of the document and can be deleted. Each e-mail carriesits position in the route in the control field STEP 69. This permitsmore than one concurrent use of a workflow route. Because each workflowe-mail carries its state in the route, each document is independent ofother workflow documents and may share the same route withoutinterference. Using the e-mail address or name of a user as indicator ofthe step in a route is ambiguous, since the e-mail address or name maybe repeated in a route. Thus, the e-mail field STEP 69 permits the routeto distinguish each use of a user who may appear more than once in theroute. As an example, a workflow that requires the user at e-mailaddress A to review the work of the user at e-mail address B, which isthen followed by work by the user at e-mail address C, which is reviewedby the user at e-mail address A, the route might be described by thesequence: e-mail address B (STEP=1), e-mail address A (STEP=2), e-mailaddress C (STEP=3), e-mail address A (STEP=4). The use of only thee-mail address as the state variable would not distinguish between thefirst use of e-mail address A (STEP=2) from the second use of e-mailaddress A (STEP=4). This example demonstrates implementation of aworkflow system where each user need only have access to the e-mailsystem.

A more sophisticated user interface for workflow can be developed by useof special electronic form programs that format the e-mail and displaythe workflow e-mail as a workflow form for editing and automate thereply function to address the e-mail to return to the form routemanager. For example, the Microsoft operating systems and MicrosoftExchange e-mail system with the Microsoft E-Forms extensions have thesefunctions as part of the Windows environment and the message-basedworkflow system can take advantage of this without other specialprograms.

FIG. 7 shows one embodiment of the invention in the context ofreimbursement approval. Rather than a linear route, the workflowrequired has several conditional branches. A traveler, P1, can SUBMITthe completed business travel reimbursement document to the manager orcan elect to CANCEL the travel approval procedure after a CLARIFY returnfrom the manager as described later. The manager, P2, may APPROVE,sending the document to finance, P3, or may ask to CLARIFY, sending itback to P1 (for example, to ask for explanations or corrections), or mayCANCEL the approval procedure. Finance, P3, can send a message to P1when the procedure is complete. The traveler, P1, may receive thedocument back from the manager, P2, and can amend it and SUBMIT it backto P2 or may CANCEL the procedure. The participants and others may wantinformation about the status of the procedure.

The travel reimbursement workflow illustrates useful features of theform route manager. These features are: (1) support for two or moredifferent routes; (2) capability to track each document in the workflowsystem and to collect statistical information; (3) support forconditional branches and cancellation of a document workflow; and (4)support for sending messages when specific steps are processed or whenconditional events occur. These may be combined to implement a workflowsystem which supports business procedures like the business travelreimbursement procedure.

Support for Two or More Routes

The present invention of message-based workflow supports multiple routesas illustrated in FIG. 8 by the use of an e-mail control field ROUTE 811that is set to the name of the route with which the e-mail isassociated. The SQL Table ROUTE X & Y illustrates the SQL tablestructure to implement two routes named X 812 and Y 813.

SQL TABLE: ROUTE X & Y: ROUTE STEP NEXT E-MAIL ADDRESS NEXT STEP X 1 A 2X 2 B 3 X 3 NULL NULL Y 1 B 2 Y 2 C 3 Y 3 NULL NULL

Row one of SQL Table ROUTE X & Y indicates that for route X at step 1,the next e-mail address is A and the next step in route X is 2 and soforth. The form route manager determines the next e-mail address andnext step by using the ROUTE and STEP control fields in the e-mail toaccess the route SQL table and updates the e-mail address to the nexte-mail address and STEP to the next step and sends the e-mail to thenext e-mail address.

FIG. 8 illustrates the form route manager supporting the two routes:route X 812 and route Y 813. The e-mail contains the control field ROUTE811 to identify which route is to be used for the e-mail. The sequenceof e-mails: 81, 82, 83, 84, and 85 with control field ROUTE=X isprocessed using Route X and the sequence of e-mails: 86, 87, 88, 89, and810 with control field ROUTE=Y is processed using route Y.

Tracking Each Document and Provide Statistical Information

Additional functions are provided when the form route manager trackseach document as it is processed. In FIG. 9, the e-mail control fieldDOC 912, for document, is a message control field associated with aworkflow document and is carried in each workflow e-mail to identify thedocument that it is carrying. The value of DOC 912 for a given documentmust be unique to distinguish an e-mail containing this document fromamong the e-mails for other documents active in the workflow system. Thevalue for DOC 912 is set when a document begins a procedure with theinitial e-mail. The value may be set by the form route manager, or bythe user and the form route manager will verify that the value is uniquefor the active document, or by rules that insure that the values areunique. An example of a rule to generate a unique DOC 912 value is theconcatenation of the user e-mail address and the time in millisecondsand date. This value would be unique since it would be impossible for auser at the same e-mail address to create two documents at the same timein milliseconds.

As illustrated in FIG. 9, the form route manager contains a LOCATIONtable and a MOVE HISTORY table. These are referenced using DOC 912 asthe index. An implementation could combine these two tables into onewhere the most recent entry for a document represents the location ofthe document in the workflow system.

FIG. 9 illustrates workflow for three documents where one workflow isinitiated by a user at e-mail address C who generates the sequence ofe-mails 91, 92, 93, and 94 that follow route X. The e-mail 91 does nothave a DOC 912 value when sent by a user at e-mail address C to the formroute manager, but rather merely identifies it is an initial e-mail,STEP=1, and which route is to be used, ROUTE=X.

The form route manager assigns II for DOC 912 for the e-mail and tableindexes. The form route manager then enters in the MOVE HISTORY tablethat the e-mail assigned DOC=II was received from the e-mail address Cat a military time and date of 9:30/11/05. The form route managerdetermines e-mail address A is the next address in ROUTE X and sends thee-mail 92 with DOC=II, ROUTE=X, and STEP=2, to e-mail address A andenters the following in the LOCATION table: DOC=11, ROUTE=X, STEP=2,e-mail address=A. The user at e-mail address A processes e-mail 92(changes the body from “V” to “E”) and returns e-mail 93 to the formroute manager. The form route manager using that ROUTE=X and STEP=2determines that the next step in route X is 3, the next e-mail addressB, and updates the step field to STEP=3 and the e-mail address field toe-mail address=B. As shown in FIG. 9, the form route manager uses DOC=IIas an index to access the LOCATION table and update the LOCATION tableto e-mail address B, and adds in the MOVE HISTORY table: DOC=II, e-mailaddress=A, Time=10:25/11/05, and sends the e-mail 94 to e-mail addressB. The LOCATION table indicates that the workflow document is at e-mailaddress B and the MOVE HISTORY table indicates it was sent at 10:25 on11/05. From the MOVE HISTORY table, one can tell the workflow started at9:30 on 11/05 and that it took the user at e-mail address A about 55minutes to respond and perform that workflow step.

The user at e-mail address A initiates two documents which generatese-mail sequence 96 and 97 with DOC=I and e-mail sequence 98, 99, 910,and 911 with DOC=III, both following route Y. The LOCATION tableindicates that DOC=I is currently at e-mail address B and DOC=III is ate-mail address C. The MOVE HISTORY table provides the process timing andthe users who processed these steps. The number of entries in theLOCATION table is a measure of the number of active documents in theworkflow system. The MOVE HISTORY table can be used to calculatestatistics, e.g., average time to use the Route X procedure, the totalnumber of documents processed, and find any workflow step with largeprocess time indicating a possible bottleneck.

The LOCATION table holds values for ROUTE and STEP for each activedocument. The e-mail field DOC 912 can be used as the index to accessthese values from the LOCATION table and remove the need for ROUTE andSTEP in the e-mail except for the initial e-mail. However, having thisinformation in both the e-mail and LOCATION table provides an integritycheck on the flow of the document. For example, the form route managercan compare the ROUTE and Step fields of an e-mail with the values inthe LOCATION table to detect an old e-mail for a document and preventthe propagation of an erroneous e-mail.

Conditional Branching and Conditional Cancellation

Some workflow requires a change in the flow of the document based ondecisions made in a workflow step. In the business travel reimbursementexample, the manager could approve the document and send it toaccounting, send the document back to the traveler, or cancel theapproval procedure. The route can specify steps in which choices may bemade or the specific functions to be executed by the form route manager.The SQL table branch route illustrates the structure to support theconditional branching illustrated in FIG. 10.

SQL TABLE BRANCH ROUTE: STEP NEXT E-MAIL ADDRESS NEXT STEP BRANCH ROUTE1 B 2 2 C 3 Y 2 D 4 N 3 NULL NULL 4 NULL NULL

In the BRANCH ROUTE table, row one indicates that at step 1, the nexte-mail address is B and the next step is 2. However, rows two and threehave the same step value of 2. This permits selection of the route basedon the value of the BRANCH ROUTE.

In FIG. 10, the route permits a user at e-mail address B at Step 2 toselect the route branch by setting the control field BRANCH INDICATOR.The user at e-mail address B can send the document to e-mail address Cby setting the BRANCH INDICATOR=Y which selects the branch route toe-mail address C or can select e-mail address D by setting the BRANCHINDICATOR=N. The e-mail sequence 101 and 102 transmits the document fromthe user at e-mail address A to e-mail address B. The user at e-mailaddress B responds with e-mail 103 with BRANCH INDICATOR=N. The formroute manager compares the BRANCH INDICATOR with the BRANCH ROUTE anddetermines that the next e-mail address in the selected branch route ise-mail address D and sends the e-mail 104 to the e-mail address D. Auser at e-mail address D completes the route by sending the e-mail 105to the form route manager. E-mail sequence 106, 107, 108, 109, and 1010illustrates a document workflow that selects the branch route to thee-mail address C by setting the BRANCH INDICATOR=Y. While the exampleillustrates a two-way branching decision, three or more branches can beimplemented easily after review of the present application.

The cancellation of workflow can be thought of as a special case of theconditional branch where the workflow terminates on one of the branches.In FIG. 11, the e-mail contains a control field CANCEL 119. A user ate-mail address B can either send the document to e-mail address C orcancel the work flow by setting CANCEL=Y. The e-mail sequence 116 and117 sends the document from the user at e-mail address A to e-mailaddress B. In e-mail 118, the user at e-mail mail address B cancels thework flow by setting the CANCEL=Y. The form route manager determinesfrom CANCEL 119 being set=Y that no further e-mails are to be sent forthis document. The e-mail sequence 111, 112, 113, 114, and 115illustrate a workflow where the user at e-mail address B continues thework flow and the document is sent to e-mail address C.

Another form of a conditional cancel can be made by constructing a routethat permits selecting a branch route that ends the work flow using theBRANCH INDICATOR as described earlier. The indicator for the end of awork flow in this example is a branch route with “NULL” as the nextroute step.

Event Notification

In many businesses, the users like prompt notification when choices aremade or process steps are completed. For example, the traveler seekingreimbursement would like to be promptly notified if the manager deniesthe business travel reimbursement request. FIG. 12 illustrates a routethat specifies that a set of e-mails are to be sent to a distributionlist if the user at e-mail address B sets the BRANCH INDICATOR=N. Asimilar function extends to the CONDITIONAL CANCEL function. The routecontains a SEND MESSAGE 1211 field that indicates when a message is tobe sent. The route is represented by SQL TABLE MESSAGE where the messageis to be sent to LIST D, a list of e-mail addresses, if ROUTE BRANCH Nis set at STEP=2.

SQL TABLE MESSAGE: NEXT E-MAIL BRANCH SEND STEP ADDRESS NEXT STEP ROUTEMESSAGE 1 B 2 2 C 3 Y 2 D 4 N LIST D 3 NULL NULL 4 NULL NULL

In FIG. 12, the e-mail sequence 121 and 122 transmits the document fromthe user at e-mail address A to e-mail address B. A user at e-mailaddress B sets BRANCH INDICATOR=N in e-mail 123. The form route managerdetermines that e-mail address D is next and sends e-mails 1211 to thedistribution list LIST D informing of the decision of the user at e-mailaddress B to set the BRANCH INDICATOR=N. E-mail sequence 126, 127, 128,129 and 1210 illustrates where BRANCH INDICATOR=Y was set at step 2 andinformational messages are not sent.

It may be desirable to have the e-mails sent when the workflow reaches aspecific step. FIG. 13 illustrates a route where a set of e-mails 136are sent to a mailing list 137, a list of e-mail addresses, when step 2is completed by the user at e-mail address B and e-mail 133 is receivedby the form route manager. Those skilled in the art will realizenotifications are not limited to e-mail but may involve phone pages,voicemail, facsimile, or other notifications.

Travel Reimbursement Approval Procedure

We have now defined the necessary functions to implement the travelreimbursement approval procedure. The route for the procedure in FIG. 7is illustrated in SQL TABLE TRAVELER. The traveler is P1, the manager isP2, and accounting is P3.

SQL TABLE TRAVEL: NEXT E-MAIL BRANCH SEND STEP ADDRESS NEXT STEP ROUTEMESSAGE 1 P2 2 2 P3 3 APPROVE 2 P1 4 CLARIFY 2 NULL NULL CANCEL P1 3NULL NULL P1 4 P2 2 SUBMIT 4 NULL NULL CANCEL P2

The first row, the document is sent to P2. The next three rows provideP2 with the choice of approving the document and sending it to P3, orsending the document back to P1, or canceling the workflow and sending amessage to P1. The fifth row is the completion of the workflow by P3.The sixth and seventh rows provide P1 with the choice of sending thedocument to P2 or canceling the workflow and sending a message to P2.The e-mail format uses STEP, DOC, and BRANCH INDICATOR control fields.The DOC field enables tracking of each document using the LOCATION tableand MOVE HISTORY table. These tables provide real time location of thedocument and statistical information on each document and collection ofdocuments. The BRANCH INDICATOR field permits P1 and P2 to implementtheir choices.

Workflow Routes and Organizational Knowledge Base

The workflow e-mails appear in some respects as e-mails to the e-mailsystem. Thus, a user can send a workflow e-mail to anyone on thecomputer network and not just back to the form route manager. If theworkflow is tracked by the form route manager in the LOCATION and MOVEHISTORY tables, the form route manager can only track the e-mail to thelast user to whom it had sent the e-mail. In FIG. 14, a user at e-mailaddress B sends a workflow e-mail 143 to e-mail address D rather than tothe form route manager. A user at e-mail address D sends the e-mail 144to e-mail address C, but the form route manager can only track thee-mail to e-mail address B, the last e-mail address that the form routemanager sent the e-mail. The expectation is that the user at e-mailaddress C will send the e-mail 145 to the form route manager.

Redefining the Workflow Route to Obtain an Optimal Set of Users

It may be desirable to send workflow e-mail to a user not on thepredetermined route. In the past, many workflow applications were forroutine processes making it easy to predefine the route and users tocarry out the process. Now, however, many people have a role in ourknowledge-based society imposing different constraints on workflow.Unlike the routine processes of the past, the best route may not beclear at the outset. The present invention addresses this problem byproviding a way to dynamically redefine the route based on choices madeby the users on the route to better harness the ever-changing knowledgeof the organization. This ability to redefine the route at the userlevel is of great value.

In one embodiment, the system opens workflow to anyone on the e-mailsystem and not just those originally specified in the route. Thus, anindividual in the route can send an e-mail to others who may haveinformation which adds value to the workflow. This is very advantageousas it is difficult to establish the optimal set of experts forknowledge-based processes. However, the users on the route can typicallyidentify others who should be added to the route. Thus, in oneembodiment, the system provides workflow which tracks the actual routeand captures the actual route as defined by the user community. Thispermits an organization to leverage its knowledge of the organizationand use the workflow as the “memory” of successful workflows. Thisability to go off route and capture the optimal route permits theworkflow to track the evolving knowledge of the organization.

Capturing Actual Workflow Routes

To track e-mail, the form route manager must be part of the e-mailmessage workflow. The ROUTE MODIFIER control field in workflow e-mailprovides this mechanism. If the ROUTE MODIFIER is assigned an e-mailaddress, the form route manager sends the e-mail to this e-mail addressand tracks it by updating the LOCATION and MOVE HISTORY tables. As shownin FIG. 15, route X flows from e-mail address A to e-mail address B toe-mail address C. The route that is executed, the actual route, includesthe user at e-mail address D. The e-mail sequence 151 and 152 sends thee-mail from the user at e-mail address A to e-mail address B. The userat e-mail address B sends e-mail 153, with the ROUTE MODIFIER set toe-mail address D and to the form route manager. The form route managerupdates the LOCATION and MOVE HISTORY tables to reflect that it sent theworkflow e-mail 154 to e-mail address D. A user at e-mail address Dreturns e-mail 155 to the form route manager and the form route managerdetermines the next user on the route e-mail address C, updates thetables, and sends e-mail 156 to e-mail address C.

At the completion, the MOVE HISTORY table holds the exact sequence ofe-mail addresses for a specific document. As illustrated in FIG. 16, theMOVE HISTORY table can be used to create a new route based on the routeactually executed. The MOVE HISTORY can be used directly or can beedited to prune and/or extend to people not in the MOVE HISTORY table tohelp the evolution of a procedure. Thus, the original route specified Ato B to C, the route created from the MOVE HISTORY table specifies A toB to D to C, where D was added to the original route.

A Two Form Route Manager Workflow System

It may be desirable to have the route and tracking of workflow separatedinto two or more form route managers. For example, a workflow may crosstwo widely separated sites and the delay of e-mail transfer may impactthe performance of the workflow. Another application is when theworkflow route is separated so that each route segment can evolvewithout impacting the other route segment. A third application is wherea workflow may start in one company and continue in another company.Finally, the two route managers may backup one another.

FIG. 17 illustrates a workflow route segment that begins in form routemanager 1 from e-mail address A, to e-mail address B, then to a secondroute segment in form route manager 2, e-mail address C, e-mail addressD, and finally to e-mail address E. In one implementation, the SQL tablein form route manager 1 representing route segment 1 is illustrated asSQL table ROUTE SEGMENT ONE and the route segment 2 in form routemanager 2 is illustrated as SQL table ROUTE SEGMENT TWO.

SQL TABLE ROUTE SEGMENT ONE: STEP NEXT E-MAIL ADDRESS NEXT STEP 1 B 2 2form route manager 2 3 3 NULL NULL

SQL TABLE ROUTE SEGMENT TWO: STEP NEXT E-MAIL ADDRESS NEXT STEP 1 C 2 2D 3 3 E 4 4 NULL NULL

The e-mail sequence 171, 172, and 173 transfers the e-mail from e-mailaddress A to e-mail address B. The e-mail 174 is used to transfer thee-mail between form route manager 1 and form route manager 2. The STEPfield in e-mail 174 is set to the initial step, STEP=1, for routesegment 2 by form route manager 1. Form route manager 2 sends the e-mail175 to e-mail address C to continue route segment 2 and e-mail 1711 toform route manager 1 to confirm the transfer to route segment 2. Thee-mail 1711 with STEP=3 is required if the form route manager 1 has aLOCATION and MOVE HISTORY TABLE to signify that route segment 1 iscomplete. E-mail 1711 can be used to confirm the receipt of e-mail 174by form route manager 2. The e-mail sequence 176, 177, 178, 179, and1710 transfers the e-mail from e-mail address C to e-mail address D toe-mail address E.

Complex Routes with Fork Branching, Parallel Routes, and Joining ofRoutes

In complex workflow, it may be highly desirable to have a route splitinto two or more parallel branch routes that proceed independently ofeach other. It may be also desirable to bring parallel branch routestogether to synchronize workflow or to combine into a single or smallernumber of routes. These concepts are illustrated in FIG. 18. Thefunction of splitting a route into branch routes, called a FORK, occurswhen the route at the user at e-mail address B 182 splits into twobranch routes to e-mail address C 1831 and to e-mail address D 1841. Thecombination function called a JOIN occurs at e-mail address G 185 wherethe branch routes from the e-mail address E 1832 and e-mail address F1842 join together. FORKS and JOINS can be based on rules to provide ahigh degree of flexibility while still automating the procedures. A FORKcan result in parallel branch routes while a CONDITIONAL BRANCH directsflow to one of several choices.

The rules to activate branch routes need not activate all of the branchroutes but can activate a subset of the branch routes depending on theresult of the rules. As an example, assume there are four branch routes,W, X, Y, and Z and Rule 1 and Rule 2 apply at a FORK. Rule 1 can specifyconditions that when satisfied activate branch routes W and X inparallel by sending an e-mail to the first e-mail address in branchroute W and an e-mail to the first e-mail address in branch route X.Rule 2 can specify conditions that when satisfied activate branch routesW, Y, and Z in parallel by sending e-mails to the first e-mail addressesin branch routes W, Y, and Z.

In an example, the JOIN rule may be employed in a situation whereparallel approval is required such as that where both fixed assetapproval and finance approval is required to continue a purchaseapproval procedure. In general, these rules may be generalized toinclude Boolean functions, voting, weighted votes, and unconditionaljoins.

FIG. 19 illustrates the route and sequence of e-mails to effect a FORKat e-mail address B. In one embodiment a FORK ROUTE is shown in SQLTABLE FORK below. The FORK/JOIN column indicates when two or more rowsat the same step produce parallel workflow routes by use of the word“FORK”.

SQL TABLE FORK: STEP NEXT E-MAIL ADDRESS NEXT STEP FORK/JOIN 1 B 2 2 C3A FORK 2 D 3B FORK 3A NULL NULL 3B NULL NULL

At step or row 1, the form route directs the e-mail to e-mail address B.Rows two and three have the same step number and the key word FORK inthe FORK/JOIN column. At step 2, the form route manager generates aparallel workflow by sending e-mail to both e-mail address C and toe-mail address D. If the form route manager contains the LOCATION tableand MOVE HISTORY table, each parallel route would have an entry in theLOCATION table. The document identifier can be augmented with a suffixto distinguish between the location and move history of the parallelroutes. Those skilled in the art will recognize after review of thepresent application that alternative data structures can represent theinformation required for the parallel route and tracking functions.

In FIG. 19, the e-mail sequence 191, 192, and 193 transfers the workflowdocument from e-mail address A to the form route manager to e-mailaddress B to the form route manager. The form route manager copies thee-mail 193 and sends a copy e-mail 1941 to e-mail address D and a copye-mail 1942 to e-mail address C so that C and D can process the documentin parallel.

In FIG. 20, the route specifies a JOIN at e-mail address C. The routestructure is illustrated in SQL TABLE JOIN where a row with the key word“JOIN” in the FORK/JOIN column is used to signify where two or moreparallel routes join.

SQL TABLE JOIN: STEP NEXT E-MAIL ADDRESS NEXT STEP FORK/JOIN 1 C 3 JOIN2 C 3 JOIN 3 D 4 4 NULL NULL

The e-mail 201 from the user at e-mail address A and the e-mail 202 fromthe user at e-mail address B must be received by the form route managerbefore sending the e-mail 203 to e-mail address C. Thus, the joinfunction is similar to an AND logic gate. The form route manager hasmemory to save receipt indicators of the asynchronous receipt of e-mails201 and 202 before sending the e-mail to e-mail address C. The formroute manager receives either e-mail 201 or 202 and sets an indicator toshow one e-mail was received and checks the other indicator to determineif the other e-mail was received. The SQL table MESSAGE RECEIVEDillustrates a data structure that implements this function when message201 was received.

SQL TABLE MESSAGE RECEIVED: STEP RECEIVED 1 201 2

Since message 202 had not been received, the form route manager beginsprocessing the next e-mail. When message 202 is received, the form routemanager sends e-mail 203 to the next step in the route, e-mail addressC. For multiple documents using the join function, each message and theSQL table MESSAGE RECEIVED would require an additional field, DOC, todistinguish between the use of join flags among the documents. Thoseskilled in the art will recognize after review of the presentapplication that different data structures could be devised toaccomplish this function.

Fault Detection and Recovery

Workflow requires the cooperation of independent PCs and the e-mailsystem. A workflow can be delayed, for example, by a user not timelyperforming his step, or by an e-mail being lost by a faulty e-mailsystem. A fault detection mechanism can measure the time between thesending of an e-mail to a user and the receipt of the return e-mail asillustrated in FIG. 21. There e-mail 212 is sent and the form routemanager clocks the waiting period for the receipt of the e-mail 213. Ifthe time exceeds a predetermined interval, a potential fault isdetected. Recovery could be resending the e-mail, sending a notificatione-mail to another e-mail address or list of e-mail addresses, sending ane-mail to an e-mail address C next on the route, an e-mail to the e-mailaddress A who initiates the workflow, an e-mail to the manager of a userat e-mail address B who is not responding, or sending a telephone pageto a phone number or set of numbers, or sending a FAX to a number or setof numbers. In some of these failures, the e-mail will be lost. Becausemany e-mail systems hold images of e-mails sent by a client, the formroute manager can store images of the sent e-mails to recover the loste-mail. For example, Lotus cc:Mail has an e-mail log that can be used torecover lost e-mails. Many e-mail and e-mail systems also have extensivebackup and recovery mechanisms to recover from system outages. The formroute manager may use these mechanisms to recover from e-mail failures.

The form route manager can be implemented using relational databasemanagement, RDBM, technologies. RDBM has extensive error detection andrecovery mechanisms and permits easy implementation of high reliabilitystructures such as mirrored, duplicated hardware and replicated,redundant databases. With the use of these technologies, the form routemanager can be implemented to be highly reliable.

As mentioned, the e-mail system may be used so that two form routemanager units can be backup units for each other, and this isillustrated in FIG. 22. Each workflow e-mail is addressed to the secondform route manager as well as the e-mail address to which the e-mail issent. This ensures that the second form route manager has a copy of thee-mail and can track the progress of the workflow with respect to theform route manager which sent the e-mail. Many e-mail systems canaddress a message to a list of e-mail addresses or can provide acourtesy copy of the e-mail to another e-mail address. The user ate-mail address A can send e-mail 221 to form route manager 1 and e-mail222 to form route manager 2. Form route manager 1 sends an e-mail 223 tothe e-mail address B and an e-mail 224 to form route manager 2. When theuser at e-mail address B completes the process step, the e-mail is sentback using the REPLY ALL function available in many e-mail systems thatwill send the e-mail to the sender and all the addressees on theoriginal e-mail. This will send an e-mail 225 to the form route manager1 and an e-mail 226 to the form route manager 2. This permits form routemanager 2 to track the workflow. The form route manager 1 sends thee-mail 227 to the e-mail address C and e-mail 228 to form route manager2. The user at e-mail address C sends e-mail 229 to form route manager 1and e-mail 2210 to form route manager 2 using the REPLY ALL function. Ifform route manager 1 fails, form route manager 2 is ready andsynchronized with the workflow. The e-mail addresses can use the REPLYALL function, and send e-mails to both form route managers, because thee-mails to the failed form route manager will be queued in the e-mailsystem. Because the two form route managers need not be physicallyclose, the form route managers can be spaced miles apart to ensure acatastrophe does not affect system reliability.

Workflow Document Format Changed by Form Route Manager Based on Route

In certain workflows, it is desirable to control what data each user inthe procedure can see, enter, or modify based on the step in the route.The form to be used may be specified in the route. The form routemanager holds a set of document templates in a forms library that areused as e-mail formats. This may require that the form route managerextract data from an e-mail it receives and insert it into an e-mailform that it is sending. The route has a form field associated with aroute step that designates the form to be used for that step. For FIG.23, the SQL TABLE FORMS illustrates the route structure to implement theforms function.

SQL TABLE FORMS: STEP NEXT E-MAIL ADDRESS NEXT STEP NEXT FORM 1 B 2 W 2C 3 X 3 NULL NULL

In FIG. 23, the form route manager receives e-mail 231 from a user ate-mail address A in format R, determines from the NEXT FORM field forthe next step 2 in the route that document format W is to be used andsends e-mail 232 to e-mail address B in format W. In similar fashion,e-mail 233 received in format S is mapped to format X for e-mail 234 toe-mail address C.

Workflow Status, Route Editing, and Document Forms Request E-mails

Users in workflow may want information on the progress or the statisticsof the workflow, such as the average process time. However, many of theusers are not connected to the form route manager and only have accessusing e-mail. The critical parameter for such information is the valueof DOC, the index for the LOCATION and MOVE HISTORY tables. Eachdocument has a unique DOC value. In certain embodiments, the users mustsave the value of DOC if they want to get status on the document. Tofacilitate e-mail access, a set of e-mail formats are illustrated inFIG. 24. In response to an e-mail 241, having a control field STATUS,and sent by a user at e-mail address A, an e-mail 242 is sent by theform route manager to e-mail address A with the STATUS and the DOC=I atthe same time as the e-mail 243 is sent to the e-mail address B. A userat e-mail address A saves e-mail 242 for later use to request status onthis document. The e-mail sequence 244 and 245 advances the document toe-mail address C. A user at e-mail address A requests the status of thedocument by sending e-mail 246 to form route manager by using the REPLYfunction on the e-mail 242 that was saved earlier. The form routemanager responds with e-mail 247 with the LOCATION and MOVE HISTORY forthe document with DOC=I. A user at e-mail address A can save e-mail 247and use it or e-mail 242 to request subsequent status.

Because many workflow users are connected to the form route manager justthrough the e-mail system, the present invention provides a way tocreate or edit the route and e-mails for a workflow by use of e-mails. Arequest for e-mail to the form route manager returns a route and e-mailsdocuments that may be used to create a new route and e-mails for a newprocedure or to edit a route or form for an existing procedure. Thedocument edited in the PC is sent back to the form route manager to beadded to the library of procedures, routes, and forms. It may bedesirable to have a security system that permits only those with thecorrect password or user address to modify or add routes and forms.

The workflow may be initiated from a PC, terminal, or workstation bysending a workflow e-mail to the form route manager. One of ordinaryskill would understand after review of the present application, that thecomputers at each e-mail address can encompass any device with a displayand input, including hand-held and portable terminals, bar code readers,radio frequency, infrared, and ultraviolet-connected terminals, andother input/output devices that may participate in business procedures.The initial workflow document e-mail can be obtained from the form routemanager by sending a request e-mail for blank workflow e-mails for eachof the active procedures. The form route manager responds with a list ofprocedures that may be initiated by that user. The user edits the listand sends it back to the form route manager. The form route manager thenresponds with workflow document e-mails in their initial state asrequested. These may be used immediately or saved by the user in theirmail log for later use. Alternatively, the e-mail system can have blankinitial e-mail forms that were sent by the form route manager infolders. Users can initiate workflow processes by just selecting theappropriate e-mail, use the REPLY function to address the e-mail to theform route manager, fill in the form and send it. Since the e-mail wasfrom the form route manager, the user need not address the e-mail ifREPLY is used.

The workflow procedure can be initiated by a computing machine or systemconnected to the e-mail system. As an example, a company may have annualreviews. Human resources has the date of last review for each user andcan initiate a review procedure for each user who has a last review datelater than one year from the current date by sending a workflow documente-mail, with the appropriate HR information, to the form route managerto send to each manager who has an employee needing a review. Onceinitiated, the review procedure can be monitored to ensure that everyemployee receives their annual review.

Route Role Mapping To Users

The route for a procedure requires the e-mail address of the people whoprocess each step. However, there may be a workflow that is the same butrequires different people. Rather than creating a different route foreach use, the route may have role symbols that are used to map to theactual e-mail address of the people who are to execute the procedure.For the business travel reimbursement example the roles are initiator,approver, and payor. The SQL TABLE ROLE ROUTE and SQL TABLE ROLES showthe relationships for concepts illustrated in FIG. 25.

SQL TABLE ROLE ROUTE: STEP NEXT ROLE NEXT STEP 1 R2 2 2 R3 3 3 NULL NULL

SQL TABLE ROLES: PROJECT ROLE E-MAIL ADDRESS Project 1 R1 A Project 1 R2B Project 1 R3 C Project 2 R1 D Project 2 R2 E Project 2 R3 F Project 3R1 TBD Project 3 R2 MGR TBD Project 3 R3 FIN

In FIG. 25, these three roles are shown as R1, R2, and R3. The e-mail251 includes the control field PROJECT 252 which permits the selectionof e-mail addresses based on the value of PROJECT. The mapping in SQLTABLE ROLE ROUTE permits the selection of the e-mail addresses based onProject 1 or Project 2 where for Project 1, R1 is e-mail address A whilefor Project 2, R1 is e-mail address D. The roles may be specified or maybe determined based on other information such as an organizationstructure. The SQL TABLE ORGANIZATION illustrates the relationship ofemployees and managers.

SQL TABLE ORGANIZATION: EMPLOYEE MANAGER OF EMPLOYEE W Z X Z Y Q Z R Q R

For Project 3, R1 is to be determined (TBD), and is the e-mail addressof the initiator of the workflow. Based on TBD, R2 is selected as thee-mail address of the manager of TBD, the manager of the initiator, andR3 is the e-mail address FIN, finance or the accounting department.

For example using the organization illustrated in SQL TABLEORGANIZATION, an e-mail from employee W with PROJECT=Project 3 could besent to the manager of employee W, Z. Similarly, an e-mail from employeeY would be sent to manager Q. The mapping table can be designed toidentify alternate or backup personnel where the role table specifies alist of e-mail addresses with a selection rule. Special e-mails to theform route manager that edit the mapping table may be used to modify orto assign an alternate when a person is absent or on vacation.

In summary, the route role position may map to a list of people, each ofwhom may perform the process. The mapping of roles to people can bebased on an organization chart. As an example, in the business travelreimbursement procedure, the traveler role may not be assigned to aspecific person in the route but may be designated TBD when the e-mailis received by the forms route manager. The R2 manager role is thenmapped to the user who is the manager of the traveler.

Load Balancing

Some procedure routes identify two or more people who may execute aspecific process step. For a workflow tracked with LOCATION table, theform route manager can be used to make the selection of the user tobalance the load among the designated people. The selection is based onrules that can be set in the form route manager. As an example, a rulecan be set to send the workflow e-mail to the user with the smallestnumber of workflow e-mails in the LOCATION table. This mechanism,however, makes the assignment without the possibility of reassigning thee-mail to another user and implements a multi-queue and multi-serverstructure. Another mechanism has a queue in the form route manager andeach user has no more than one workflow e-mail in the LOCATION table.When a user completes a process step and sends the e-mail to the formroute manager, the form route manager can then send that user anothere-mail from the queue. This implements a more effectivesingle-queue-multi-server structure.

Advantages Associated with E-mail Systems

Some e-mail systems, such as Microsoft Exchange, have an e-mail recallfunction that removes unopened e-mail from the e-mail in-box of arecipient. This can recover e-mails sent to a user who is not processingworkflow documents and is holding up documents in process.

Many e-mail systems provide functions that separate e-mails based onsender identification. This will provide an easy way for users toseparate the workflow e-mails from their other e-mail. Sort by date andother sorts of the in-box can be used to prioritize the workflow e-mailsfor each user. Some e-mail systems will sort on the subject field andthe form route manager can send the due date in this field. Some e-mailsystems have several e-mail priorities that can be used by the businessprocedure to help prioritize the users' workflow e-mails. Some e-mailsystems have an automated e-mail-forwarding mechanism that will permit auser to assign a second user as the recipient of the e-mails. Thisfunction forwards to the second user the e-mails addressed to the firstuser. This function can be used when a user goes on vacation or on anextended trip and cannot execute the process steps assigned to him. Useof the REPLY and REPLY ALL functions is essential for easy use of thee-mail based workflow system. It avoids the need for any of the users toever enter the address of the form route manager and easily supports abackup, alternate form route manager. The e-mail systems are evolving toprovide good user interfaces and functions. The e-mail based workflowsystem can take advantage of many of these functions and minimize theneed for any special programs in the PC, terminal host, or workstation.

Advantages Associated with the Internet

Microsoft Exchange permits users to access their in-boxes using remotePC's connected by phone lines or the Internet. Microsoft Exchange alsosends and receives e-mails from the Internet so the workflow users canbe e-mail clients on the Internet. These e-mail system capabilitiespermit the form route manager to control workflow procedures that haveprocess steps extending beyond the LAN-connected PC's, terminals, andworkstations and permit the workers to have remote access and addressesanywhere on the Internet, which extends the workflow capabilities beyondthe traditional boundaries of a company and permits integration ofworkflow among commercial trading partners. Many e-mail systems such asLotus cc:Mail have these capabilities so implementation of the formroute manager program is not limited to Microsoft Exchange.

The workflow users of simple e-mail systems may connect to the Internetand participate in the workflow controlled by a form route managerattached somewhere on the Internet. The users need not be concernedabout remembering the e-mail address of the form route manager, sincethe workflow e-mail is from the form route manager and the response isreturned using the REPLY function. The users may participate in workflowcontrolled by two or more form route manager units and need notdistinguish between the form route manager addresses, since the responsee-mails return to the correct form route manager. The workers need onlyopen their e-mail, set the e-mail to reply to sender, process theirstep, and send the modified e-mail.

Advantages Associated with the World Wide Web

In one embodiment, the workflow system can be an integration of e-mailand world wide web technologies where the form route manager is a worldwide web site with e-mail capability. The e-mails from the form routemanager include the URL (Universal Resource Locator, the human readableaddress of an Internet site or a specific web page) or IP (InternetProcess, the system address of an Internet site) of the form routemanager and the message from the user in the form of connections to theform route manager web site. Many e-mail systems are web browser basedor integrate with browser technology. Many of these can launch aconnection to a web site from a URL or IP address embedded in an e-mail.A user receives an e-mail with the URL or IP address of the form routemanager web site and connects to the site by selecting the addressembedded in the e-mail. The form route manager determines the step inthe route and provides access to the document. The user acts on thedocument as a web page that is sent back to the form route manager website. The form route manager determines the next step in the route andthe e-mail address of the next user, addresses an e-mail with theembedded URL or IP address of the form, route manager web site, andsends the e-mail. This process continues until the workflow route iscomplete.

One embodiment assigns every document in the workflow a unique URL to aweb page that contains the document and a STEP field. The functionsdescribed for the e-mail based workflow system that uses e-mail aredirectly translated to the hybrid Internet world wide web and e-mailworkflow system where the e-mails sent by the form route manager arereal e-mail and the responses by the users take the form of connectionsand submissions of web pages to the form route manager web site. Notethat the user need not know the URL of the form route manager since itis embedded in the e-mail 266. This permits the users to interact withmultiple form route managers with ease since the URL address in thee-mail directs the user to the correct form route manager web site. Theuser e-mail in-box remains as the interface to all of the form routemanager workflow servers, independent of the means by which the usersends back the message: e-mail or web connection.

FIG. 26 describes the operation of the hybrid e-mail world wide webworkflow system. The user at e-mail address A initiates the workflow byconnecting to the form route manager web site using URL1, receives a webpage 267 with the initial form of the document, and starts a document ona workflow route by submitting the web page 261 back to the form routemanager. The form route manager determines from the STEP field in theweb page that this is the first step in the route and assigns URL2 asthe URL for this document. From the route, the forms route managerdetermines that B is the next e-mail address, addresses the e-mail to B,updates the web page STEP field to the value of the next step, embedsURL2, the URL of the web page with this document in the form routemanager web site, in the e-mail and sends the e-mail 262 to e-mailaddress B. A user at e-mail address B connects to the form route managerweb site by selecting the embedded URL2 in the e-mail 262 and the formroute manager web site sends the document to B as a web page 263. Theuser at e-mail address B receives the web page 263 with the document,updates the document and submits the web page 263. The form routemanager receives web page 263 and determines from the STEP field and theroute that e-mail address C is the next e-mail address on the route andsends a similarly constructed e-mail 264 to C including URL2 as theembedded URL. A user at e-mail address C connects to the form routemanager web site using URL2, receives the web page with the document,processes the document, and submits the web page 265 to the form routemanager web site. The form route manager receives the web page 265 anddetermines from the STEP field that the route is complete for theworkflow.

The message-based workflow can be further integrated into the webtechnology by replacing the sending of an e-mail to an e-mail addresswith the sending of a specific web page 276 to an IP address usingPointcast capability. Pointcast provides a mechanism for a web site topush a web page to a specific IP address or the IP address can poll theweb site and pull a web page when provided by the web site. FIG. 27illustrates one implementation of Pointcast messages from the formsroute manager to send the document to a user as a web page where theuser processes the document and submits the web page back to the formroute manager web site. The user at IP address A submits web page 271 tothe form route manager web site. The form route manager determines fromSTEP=1 that this is the initial document, assigns URL3 as the URL forthis document, determines from the route that IP address B is the nextIP address and sets STEP=2, the next step in the route, and Pointcast272 to IP address B using URL3. The Pointcast may be the entire web pageor part of a page with URL3 that appears in an in-box like web page atIP address B where the user must request the page by submitting arequest to URL3. The in-box like web page can function much as thee-mail in-box to hold the workflow documents waiting for the user. Theuser at IP address B processes the web page and submits the web page 273to URL3, the form route manager web site. The form route managerdetermines from STEP=2 and the route that the next step is 3 and thenext IP address is C. The form route manager updates the STEP field to 3and sends Pointcast 274 to IP address C. The user at IP address Cprocesses the web page and submits the web page 275 to URL3, the formroute manager web site. The form route manager determines from STEP=3and the route that this completes the workflow for this document.

The workflow may be initiated from a library of e-mail in a folder inthe e-mail system, where there is one e-mail for each workflow processand each is addressed with the e-mail address of the appropriate formroute manager. These may be copied by the users and sent to the formroute manager. In a hybrid, e-mail/web system, the form route manageraddresses are the URL of the form route manager and the user connects tothe form route manager site using this web address. The web page canhave a folder of forms. These folders can be thought of as the libraryof forms that businesses have where each form is tailored to a specificprocess. For example, travel expense forms, employee address updateforms, etc. Each form is a document with an underlying process. Thiselectronic library of e-mail or web forms not only provides the documentfor the process but provides the initial form for the electronic routethat supports the process.

The present invention permits workflow systems to have functions that inthe past have been implemented only in database workflow systems, whilepermitting the wide participation of workers connected through e-mailmessaging systems, including the Internet, without requiring the PC's,terminals, or workstations of these workers to have any special programother than e-mail or a browser used with the World Wide Web. Theinvention eliminates the barriers that have hindered the widespread useof electronic workflow systems and will permit rapid growth of thistechnology, which will effectively focus the efforts of office workersfor a majority of business procedures and will dramatically improve thequality of results, reduce processing time, and lower costs.

Below is the computer program listing written in Visual Basic for theform route manager designated as program FlowMan:

main.frm

Option Explicit

Private Sub ExitFlowMan( )

If Not (objSession Is Nothing) Then Logoff

Unload Me

End Sub

Private Sub PauseFlowMan( )

sscmdContinue.Enabled=True ‘Enable the Continue Button

sscmdContinue.Font3D=2

tmInbox.Enabled=False

bIdle=True

bPauseClicked=False

End Sub

Private Function StartFlowMan( ) As Boolean

bIdle=False

OpenAppDatabase

If CreateSessionAndLogon Then

ProcessInboxMessages

End If

If bPauseClicked Then

PauseFlowMan

Exit Function

ElseIf bExitClicked Then

ExitFlowMan

Exit Function

End If

bIdle=True

tmInbox.Enabled=True

End Function

Private Sub Form_Load( )

bPauseClicked=False

bExitClicked=False

bIdle=True

sscmdContinue.Enabled=False ‘Disble the Continue Button

sscmdContinue.Font3D=4

sscmdPause.Enabled False ‘Disble the Pause Button

sscmdPause.Font3D=4

tmInbox.Enabled=False

rtbInstruc.LoadFile (“C:\Solectron\Workflow\Dev\Flowman\instruc.txt”), 1

rtbInstruc.Visible=False

rtbTerminal.LoadFile (“C:\Solectron\Workflow\Dev\Flowman\terminal.txt”),1

rtbTerminal.Visible=False

End Sub

Private Sub Form_Unload(Cancel As Integer)

If bIdle Or bExitClicked Then

Exit Sub

Else

sscmdExit_Click

Cancel=1

End If

End Sub

Private Sub sscmdContinue_Click( )

sscmdContinue.Enabled=False ‘Disable the Continue Button

sscmdContinue.Font3D=4

sscmdPause.Enabled=True ‘Enable the Pause Button

sscmdPause.Font3D=2

tmInbox.Enabled=False

tmInbox.Enabled=False

bIdle=False

ProcessInboxMessages

If bPauseClicked Then

PauseFlowMan

Exit Sub

ElseIf bExitClicked Then

ExitFlowMan

Exit Sub

End If

bIdle=True

tmInbox.Enabled=True

End Sub

Private Sub sscmdExit_Click( )

If bIdle Then

ExitFlowMan

Else

bExitClicked=True

End If

End Sub

Private Sub sscmdPause_Click( )

sscmdPause.Enabled=False ‘Disable the Pause Button

sscmdPause.Font3D=4

If bIdle Then PauseFlowMan Else bPauseClicked=True

End Sub

Private Sub sscmdStart_Click( )

sscmdStart.Enabled=False ‘Disable the Start Button

sscmdStart.Font3D=4

sscmdContinue.Enabled=False ‘Disable the Continue Button

sscmdContinue.Font3D=4

sscmdPause.Enabled=True ‘Enable the Pause Button

sscmdPause.Font3D=2

StartFlowMan

End Sub

Private Sub tmInbox_Timer( )

If bPauseClicked Then

PauseFlowMan

Exit Sub

ElseIf bExitClicked Then

ExitFlowMan

Exit Sub

End If

tmInbox.Enabled=False

bIdle=False

ProcessInboxMessages

tmInbox.Enabled=True

bIdle=True

End Sub

dbutil.bas

Option Explicit

Private Sub ExitFlowMan( )

If Not (objSession Is Nothing) Then Logoff

Unload Me

End Sub

Private Sub PauseFlowMan( )

sscmdContinue.Enabled=True ‘Enable the Continue Button

sscmdContinue.Font3D=2

tmInbox.Enabled=False

bIdle=True

bPauseClicked=False

End Sub

Private Function StartFlowMan( ) As Boolean

bIdle=False

OpenAppDatabase

If CreateSessionAndLogon Then

ProcessInboxMessages

End If

If bPauseClicked Then

PauseFlowMan

Exit Function

ElseIf bExitClicked Then

ExitFlowMan

Exit Function

End If

bIdle=True

tmInbox.Enabled=True

End Function

Private Sub Form_Load( )

bPauseClicked=False

bExitClicked=False

bIdle=True

sscmdContinue.Enabled=False ‘Disble the Continue Button

sscmdContinue.Font3D=4

sscmdPause.Enabled=False ‘Disble the Pause Button

sscmdPause.Font3D=4

tmInbox.Enabled=False

rtbInstruc.LoadFile (“CC:\Solectron\Workflow\Dev\Flowman\instruc.txt”),1

rtbInstruc.Visible=False

rtbTerminal.LoadFile (“C:\Solectron\Workflow\Dev\Flowman\terminal.txt”),1

rtbTerminal.Visible=False

End Sub

Private Sub Form_Unload(Cancel As Integer)

If bIdle Or bExitClicked Then

Exit Sub

Else

sscmdExit_Click

Cancel=1

End If

End Sub

Private Sub sscmdContinue_Click( )

sscmdContinue.Enabled=False ‘Disable the Continue Button

sscmdContinue.Font3D=4

sscmdPause.Enabled=True ‘Enable the Pause Button

sscmdPause.Font3D=2

tmInbox.Enabled=False

tmInbox.Enabled=False

bIdle=False

ProcessInboxMessages

If bPauseClicked Then

PauseFlowMan

Exit Sub

ElseIf bExitClicked Then

ExitFlowMan

Exit Sub

End If

bIdle=True

tmInbox.Enabled=True

End Sub

Private Sub sscmdExit_Click( )

If bIdle Then

ExitFlowMan

Else

bExitClicked=True

End If

End Sub

Private Sub sscmdPause_Click( )

sscmdPause.Enabled=False ‘Disable the Pause Button

sscmdPause.Font3D=4

If bIdle Then PauseFlowMan Else bPauseClicked=True

End Sub

Private Sub sscmdStart_Click( )

sscmdStart.Enabled False ‘Disable the Start Button

sscmdStart.Font3D=4

sscmdContinue.Enabled=False ‘Disable the Continue Button

sscmdContinue.Font3D=4

sscmdPause.Enabled=True ‘Enable the Pause Button

sscmdPause.Font3D=2

StartFlowMan

End Sub

Private Sub tmInbox_Timer( )

If bPauseClicked Then

PauseFlowMan

Exit Sub

ElseIf bExitClicked Then

ExitFlowMan

Exit Sub

End If

tmInbox.Enabled=False

bIdle=False

ProcessInboxMessages

tmInbox.Enabled=True

bIdle=True

End Sub

global.bas

Option Explicit

Public Type attachment

file As String

Name As String

End Type

‘MAPI Objects

Public obj Session As Object Session object

Public objRootSchemaFolder As Object

Public objThisSchemaFolder As Object

Public objThisInstanceFolder As Object

‘Database Objects

Public appDatabase As Database

‘Message Type Constants

Public Const INIT_MESSAGE=0

Public Const MESSAGE_ADDRESSED_TO_FLOWMAN=1

Public Const MESSAGE_FROM_RECIPIENT=2

‘Node Type Constants

Public Const INIT_NODE=1

Public Const CONTROL_NODE=2

Public Const RECIPIENT_NODE=3

Public Const STOP_NODE=4

Public bPauseClicked As Boolean

Public bExitClicked As Boolean

Public bIdle As Boolean

maniputil.bas

Option Explicit

Const mapiTo=1

Private Sub CreateAttachments(objMessage As Object, attachmentColl AsCollection, attachNameColl As Collection, Position As Long)

Dim objAttach As Object

Dim count As Integer

For count=1 To attachmentColl.count

Set objAttach=objMessage.attachments.Add’add the attachment

With objAttach

.Type=mapiFileData

.Position=Position

.Name=attachmentColl.Item(count)

.ReadFromFile attachmentColl.Item(count)

End With

objAttach.Name=attachNameColl.Item(count)

Position=Position+1

Next

End Sub

Public Sub Logoff( )

objSession.Logoff

End Sub

Public Sub SendMessage(messageSubject As String, messageText As String,messageAddress As String, attachmentColl As Collection. attachNameCollAs Collection, attachmentPosition As Long)

Dim objRecip As Object

Dim objMessage As Object

Set objMessage=objSession.Outbox.Messages.Add

objMessage.subject=messageSubject

objMessage.Text=messageText

‘create the recipient

Set objRecip=objMessage.Recipients.Add

objRecip.Name=messageAddress

objRecip.Type=mapiTo

objRecip.Resolve

‘create the attachment

CreateAttachments objMessage, attachmentColl, attachNameColl,attachmentPosition

‘send the message

objMessage.Update

objMessage.Send showDialog:=False

End Sub

Public Function CreateSessionAndLogon( ) As Boolean

On Error GoTo err_CreateSessionAndLogon

Set objSession=CreateObject(“MAPI.Session”)

objSession.Logon ProfileName:=GetFlowManProfile, showDialog:=False

CreateSessionAndLogon=True

Exit Function

err_CreateSessionAndLogon:

If (Err.Number=1275) ‘Then ‘VB4.0 uses “Err.Number”

MsgBox “User pressed Cancel”

Else

MsgBox “Unrecoverable Error:” & Err.Description & Err.Source

End If

CreateSessionAndLogon=False

Exit Function

End Function

Public Function ExtractMessageHeader(objMessage As Object, schemald AsLong, instanceId As Long, messageld As Long) As Boolean

Dim strMsg As String

Dim startPos As Long

Dim endPos As Long

Dim strHeader As String

Dim schemaPos As Long

Dim instancePos As Long

Dim messagePos As Long

strMsg=objMessage.Text

startPos=InStr(strMsg, “<HEADER>”)

endPos=InStr(strMsg, “</HEADER>”)

If startPos <> 0 And endPos <> 0 Then

strHeader=Mid(strMsg, startPos+8, endPos−startPos−8)

schemaPos=InStr(strHeader, “Schema”)

instancePos=InStr(strHeader, “Instance”)

messagePos=InStr(strHeader, “MessageId”)

If schemaPos <> 0 And instancePos <> 0 And messagePos <> 0 Then

schemaId=Val(Mid(strHeader, schemaPos+6, instancePos−schemaPos−6))

instanceId=Val(Mid(strHeader, instancePos+8, messagePos−instancePos−8))

messageId=Val(Mid(strHeader, messagePos+9))

ExtractMessageHeader=True

Else

ExtractMessageHeader=False

End If

Else

ExtractMessageHeader=False

End If

End Function

Public Sub OnReceiveInitMessage(objMessage As Object, schemald As Long,instanceId As Long, messageId As Long)

SendAllMsgFromStartNode schemaId, instanceId

End Sub

Public Sub OnReceiveMessageToFlowman(objMessage As Object, schemaId AsLong, instanceId As Long, messageId As Long)

Dim nodeId As Long

nodeld=FindToNodeId(messageld)

UpdateNodeStatus messageId, instanceId, nodeId

SendAllMsgFromNode nodeId, schemaId, instanceId

End Sub

Public Sub OnReceiveMessageFromRecipient(objMessage As Object, schemaIdAs Long, instanceId As Long messageId As Long)

Dim nodeld As Long

nodeId=FindToNodeId(messageId)

SendAllMsgFromRecipientNode objMessage, nodeId, schemaId, instanceId

End Sub

Public Sub OnReceiveMessage(objMessage As Object, schemaId As Long,instanceId As Long, messageld As Long)

Dim msgType As Long

msgType=FindMessageType(messageId)

Select Case msgType

Case INIT_MESSAGE

OnReceiveInitMessage objMessage, schemaId, instanceId, messageId

Case MESSAGE_ADDRESSED_TO_FLOWMAN

OnReceiveMessageToFlowman objMessage, schemaId, instanceId, messageId

Case MESSAGE_FROM_RECIPIENT

OnReceiveMessageFromRecipient objMessage, schemaId, instanceId,messageId

End Select

End Sub

Public Sub ProcessInboxMessages( )

Dim objInboxFolder As Object ‘Folder object

Dim objInMessages As Object ‘Messages collection

Dim objInMessage As Object ‘Message object

Dim schemaId As Long

Dim instanceId As Long

Dim messageId As Long

Set objInboxFolder=objSession.Inbox

Set objInMessages=objInboxFolder.Messages

On Error GoTo error_olemsg

If objInMessages Is Nothing Then

MsgBox “must select a messages collection”

Exit Sub

End If

Set objlnMessage=objInMessages.GetFirst

While Not objInMessage Is Nothing ‘loop through all messages

If True=objInMessage.Unread Then

ExtractMessageHeader objInMessage, schemaId, instanceId, messageId

If CheckOpenInstance(instanceId) Then

OnReceiveMessage objInMessage, schemaId, instanceId, messageId

CopyMessageToFolder objInMessage, schemaId, instanceId

Else

objInMessage.Delete

End If

End If

Set objInMessage=objInMessages.GetNext

Wend

Exit Sub

error_olemsg:

MsgBox “Error” & Str(Err) & “:” & Error$(Err)

Resume Next

End Sub

util.bas

Option Explicit

Const mapiTo=1

Private Sub CreateAttachments(objMessage As Object, attachmentColl AsCollection,

attachNameColl As Collection, Position As Long)

Dim objAttach As Object

Dim count As Integer

For count=1 To attachmentColl.count

Set objattach=objMessage.attachments.Add ‘ add the attachment

With objAttach

.Type=mapiFileData

.Position=Position

.Name=attachmentColl.Item(count)

.ReadFromFile attachmentColl.Item(count)

End With

objAttach.Name=attachNameColl.Item(count)

Position Position+1

Next

End Sub

Public Sub Logoff( )

objSession.Logoff

End Sub

Public Sub SendMessage(messageSubject As String, messageText As String,messageAddress As String, attachmentColl As Collection. attachNameCollAs Collection, attachmentPosition As Long)

Dim objRecip As Object

Dim objMessage As Object

Set objMessage=objSession.Outbox.Messages.Add

objMessage.subject=messageSubject

objMessage.Text=messageText

‘create the recipient

Set objRecip=objMessage.Recipients.Add

objRecip.Name=messageAddress

objRecip.Type=mapiTo

objRecip.Resolve

‘create the attachment

CreateAttachments objMessage, attachmentColl, attachNameColl,attachmentPosition

‘send the message

objMessage.Update

objMessage.Send showDialog:=False

End Sub

Public Function CreateSessionAndLogon( ) As Boolean

On Error GoTo err_CreateSessionAndLogon

Set objSession=CreateObject(“MAPI.Session”)

objSession.Logon ProfileName:=GetFlowManProfile, showDialog:=False

CreateSessionAndLogon=True

Exit Function

err_CreateSessionAndLogon:

If (Err.Number=1275) Then ‘VB4.0 uses,“Err.Number”

MsgBox “User pressed Cancel”

Else

MsgBox “Unrecoverable Error:” & Err.Description & Err.Source

End If

CreateSessionAndLogon=False

Exit Function

End Function

Public Function ExtractMessageHeader(objMessage As Object, schemaId AsLong, instanceId As Long, messageId As Long) As Boolean

Dim strMsg As String

Dim startPos As Long

Dim endPos As Long

Dim strHeader As String

Dim schemaPos As Long

Dim instancePos As Long

Dim messagePos As Long

strMsg=objMessage.Text

startPos=InStr(strMsg, “<HEADER>”)

endPos=InStr(strMsg, “</HEADER>”)

If startPos <> 0 And endPos <> 0 Then

strHeader=Mid(strMsg, startPos+8, endPos−startPos−8)

schemaPos=InStr(strHeader, “Schema”)

instancePos=InStr(strHeader, “Instance”)

messagePos=InStr(strHeader, “Messageld”)

If schemapos <> 0 And instancePos <> 0 And messagePos <> 0 Then

schemaId=Val(Mid(strHeader, schemapos +6, instancePos−schemapos−6))

instanceId Val(Mid(strHeader, instancePos+8, messagePos−instancePos−8))

messageId=Val(Mid(strHeader, messagePos+9))

ExtractMessageHeader=True

Else

ExtractMessageHeader=False

End If

Else

ExtractMessageHeader=False

End If

End Function

Public Sub OnReceiveInitMessage(objMessage As Object, schemaId As Long,instanceId As Long, messageId As Long)

SendAllMsgFromStartNode schemaId, instanceId

End Sub

Public Sub OnReceiveMessageToFlowman(objMessage As Object, schemaId AsLong, InstanceId As Long, messageId As Long)

Dim nodeId As Long

nodeId=FindToNodeId(messageId)

UpdateNodeStatus messageId, instanceId, nodeId

SendAllMsgFromNode nodeId, schemaId, instanceId

End Sub

Public Sub OnReceiveMessageFromRecipient(objMessage As Object, schemaIdAs Long, instanceld As Long, messageId As Long)

Dim nodeId As Long

nodeId=FindToNodeId(messageId)

SendAllMsgFromRecipientNode objMessage, nodeId, schemaId, instanceId

End Sub

Public Sub OnReceiveMessage(objMessage As Object, schemaId As Long,instanceId As Long, messageId As Long)

Dim msgType As Long

msgType=FindMessageType(messageId)

Select Case msgType

Case INIT_MESSAGE

OnReceiveInitMessage objMessage, schemaId, instanceId, messageId

Case MESSAGE_ADDRESSED_TO_FLOWMAN

OnReceiveMessageToFlowman objMessage, schemaId, instanceId, messageId

Case MESSAGE_FROM_RECIPIENT

OnReceiveMessageFromRecipient objMessage, schemaId, instanceId,messageId

End Select

End Sub

Public Sub ProcessInboxMessages( )

Dim objInboxFolder As Object ‘Folder object

Dim objInMessages As Object ‘Messages collection

Dim objInMessage As Object ‘Message object

Dim schemaId As Long

Dim instanceId As Long

Dim messageId As Long

Set objInboxFolder=objSession.Inbox

Set objInMessages=objInboxFolder.Messages

On Error GoTo error_olemsg

If objInMessages Is Nothing Then

MsgBox “must select a messages collection”

Exit Sub

End If

Set objInMessage=objInMessages.GetFirst

While Not objInmessage Is Nothing ‘loop through all messages

If True=objInMessage.Unread Then

ExtractMessageHeader objInMessage, schemaId, instanceId, messageId

If CheckOpenInstance(instanceId) Then

OnReceiveMessage objInMessage, schemaId, instanceId, messageId

CopyMessageToFolder objInMessage, schemaId instanceId

Else

objInMessage.Delete

End If

End If

Set objInMessage objInMessages.GetNext

Wend

Exit Sub

error_olemsg:

MsgBox “Error” & Str(Err) & “:” & Error$(Err)

Resume Next

End Sub

What is claimed:
 1. An e-mail-based workflow system, comprising: a formroute manager, connected to a computer network, capable of accessing aroute, a sequence of email addresses in the computer network,comprising: means for receiving the e-mail, means for comparing thee-mail with the route, means for determining the next email address inthe route based on the results of the comparing means; and means forforwarding the e-mail to the next e-mail address in the reoute based onthe determining means.
 2. The e-mail-based workflow system of claim 1,wherein the e-mail includes a route indicator, the form route manager iscapable of accessing multiple routes, each route has an identifier, andthe form route manager further comprises: means for matching the routeindicator of the e-mail with one identifier of the multiple routes, andmeans for determining the route for the e-mail based on the results ofthe matching means.
 3. The e-mail-based woryflow system of claim 1 or 2,wherein the e-mail includes a document, which includes an identifier,wherein the form route manager further includes: a location table withthe document identifier and the current e-mail address of the document,and a move history table with the document identifier and a list of eache-mail address which sent the document to the form route manager.
 4. Thee-mail-based workflow system of claim 1, wherein the e-mail includes abranch indicator which is settable by the user at an e-mail address, andthe form route manager is capable of accessing multiple routes, eachroute having an identifier, and the form route manager furthercomprises: means for matching the branch indicator of the e-mail withone identifier of the multiple routes, and means for determining theroute for the e-mail based on the results of the matching means.
 5. Thee-mailed based worxflow system of claim 1, further comprising means, atthe next e-mail address, for receiving the e-mail from the form routemanager and returning the e-mail to the form route manager.
 6. Ane-mail-based workflow system for processing a document, wherein theworkflow system is connected to a computer network and a system forsending an e-mail, comprising: a form route manager, connected to thecomputer network, capable of receiving and sending the e-mail, andcapable of defining: a route, a step-by-step sequence of e-mailaddresses, in the network; and wherein a computer with an e-mail addressin the network is adapted to send the e-mail to the form route managerwhich is adapted to send the e-mail to the next e-mail address in theroute.
 7. The e-mail-based workflow system of claim 6, wherein thee-mail includes a route indicator and wherein the form route manager isfurther capable of: defining multiple routes, each route having anidentifier, comparing each route indicator with the multiple routes, anddetermining the route for each e-mail before performing the step-by-stepsequence in the route.
 8. The e-mail-based workflow system of claim 6 or7, wherein the document includes an identifier and the first form routemanager further includes: a location table with the document identifierand the next e-mail address of the document, and a move history tablewith the document identifier and a list of every e-mail address whichsent the document to the first form route manager.
 9. The e-mail-basedworkflow system of claim 6, wherein the route includes a plurality ofbranch routes at a step in the route, wherein the e-mail includes asettable branch identifier and wherein the form route manager is adaptedto select the branch route based on the setting of the branchidentifier.
 10. A method of centrally distributing e-mail to astep-by-step sequence of e-mail addresses, comprising: receiving thee-mail with an indicator of the step in the sequence stored in a formroute manager; determining from the indicator and the sequence, thesuccessor e-mail address in the sequence; updating the e-mail indicatorto the successor step; and sending the e-mail to the successor e-mailaddress.